package com.xgr.wonderful.entity;

import java.io.Serializable;
import java.util.List;

public class Status implements Serializable {
	// 状态的全局唯一号
	private Integer id;
	// 状态来自于哪个用户，每个用户有一个ID
	private Integer userid;
	// 状态包含的图片列表
	private List<Photo> imageurl;
	// 状态包含的文字内容
	private String content;
	// 状态发布时的地理位置
	private Double x;
	private Double y;
	// 点赞及点踩次数
	private Integer up;
	// 当前用户是否已点赞当前状态
	private Boolean isliked;
	// 评论次数
	private Integer commentnum;
	// 状态发布的时间
	private Long time;
	// 状态发布时据当前位置的距离
	private Long distance;
	// 状态所属用户的详细信息
	private User user;
	private Integer pagesize;
	// 当前状态在服务器端的状态列表中的位置？
	@Deprecated
	private Integer index;
	@Deprecated
	private Integer articleid;
	
	public Status(User user) {
		this.user = user;
	}

	public Status() {
	}
	
    
    /**
     *  查询点赞关系时使用的构造函数
     * @param userID
     */
    public Status(Integer userID){
    	this.userid = userID;
    }
	
	/**
	 *  点赞时与评论时使用的构造函数
	 * @param userID  如果为null，就是评论时用的
	 * @param statusID  可以由statusid查询status 
	 */
	public Status(Integer userID, Integer statusID) {
		this.userid = userID;
		this.id = statusID;
	}
	
	/**
	 *  查询状态时使用的构造函数
	 * @param userid  用户id，可以按用户查询状态，选填
	 * @param id  一个状态的id，起始查询点，选填，默认值0
	 * @param pagesize  选填，默认值10
	 * @param distance 查询范围，选填，默认值10000
	 * @param x  lati
	 * @param y  longti
	 */
	public Status(Integer userID, List<Photo> photos, String content, Double lat, Double lng) {
		this.userid = userID;
		this.imageurl = photos;
		this.content = content;
		this.x = lat;
		this.y = lng;
	}
	
	/**
	 *  查询状态时使用的构造函数
	 * @param userid  用户id，可以按用户查询状态，选填
	 * @param id  一个状态的id，起始查询点，选填，默认值0
	 * @param pagesize  选填，默认值10
	 * @param distance 查询范围，选填，默认值10000
	 * @param x  lati
	 * @param y  longti
	 */
	public Status(Integer userID, Integer statusID, Integer pagesize,
			Long distance, Double x, Double y) {
		this.userid = userID;
		this.id = statusID;
		this.pagesize = pagesize;
		this.distance = distance;
		this.x = x;
		this.y = y;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public Long getDistance() {
		return distance;
	}

	public List<Photo> getImageurl() {
		return imageurl;
	}
	
	public String getContent() {
		return content;
	}

	public Integer getCommentnum() {
		return commentnum;
	}
	
	public void increaseCommentnum(int increment) {
		commentnum += increment;
	}

	public Integer getId() {
		return id;
	}
	
	public Integer getUp() {
		return up;
	}
	
	public void increaseUp() {
		up++;
	}
	
	public boolean getIsliked() {
		return isliked;
	}
	
	public void setIsLiked(boolean liked) {
		isliked = liked;
	}
	
	public Long getTime() {
		return time;
	}
	
	public Integer getUserid() {
		return userid;
	}
}
